#ifndef _RPC_FWD_H_
#define _RPC_FWD_H_

#include <netfwd.h>
#include <appbase.h>
#include <rbtree.h>
#include <logger.h>
#include <thread.h>
#include <netconnection.h>
#include <netglobal.h>
#include <netreactor.h>
#include <mutex.h>
#include <callback.h>
#include <metaqueue.h>
#include <rbtree.h>
#include <netsocket.h>
#include <circlequeue.h>
#include <list.h>
#include <fdpoll.h>
//#include <future.h>
#include <time_value.h>
#include <xmlutils.h>
#include <sha1.h>
#include <base64.h>

#include <google/protobuf/service.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/message.h>
#include <rpc_protocol.pb.h>
#include <rpc_message.h>

#include <map>
#include <zlib.h>

#include "rpc_errstr.h"

#pragma once

enum MODULE_ID {
    E_MODULEID_NETPROC  = 9991,
    E_MODULEID_PROCINFO,
    E_MODULEID_SERVSTUBMGR,
    E_MODULEID_SERVICEMGR,
    E_MODULEID_CONFMODULE,
    E_MODULEID_CLIENTMGR,
    E_MODULEID_REQUESTMGR,
};

class RPCSysMgr;
class RPCNetRequest;
class RPCNetProcModule;
class RPCProcModule;
class RPCClient;
class RPCClient_Stub;
class RPCClient_Skel;
class RPCRequestMgr;
class RPCChannelImpl;
class RPCServStubMgr;
class RPCMethodResponse;
class RPCServiceMgr;
class RPCHeartBeat;
class RPCHandshake;
class RPCMethodNotify;
class RPCMethodAsyncRequest;
class ClosureAdapter;
template< class Handler_T > class ClosureMethodAdapter;
class RPCInternalChannel;
class RPCProcModule;

#define SOCKNAME_BUFLEN     128

#endif // _RPC_FWD_H_

